from sqlalchemy import Table, Column, Integer, String
from sqlalchemy.orm import mapper
from database import metadata, db_session, init_db, engine
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship, backref
from proyecto import Proyecto, proyecto
from usuario import Usuario, usuario

class Comite(object):
    """ Clase que define el modelo de la tabla comite """
    
    query = db_session.query_property()

    def __init__(self, nombre=None, descripcion=None, proyecto=None, cant_comite=None):
        """ Metodo init """
        self.nombre = nombre
        self.descripcion = descripcion
        self.proyecto = proyecto
        self.cant_comite = cant_comite

    def __repr__(self):
        return self.nombre

comite = Table('comite', metadata,
    Column('idcomite', Integer, primary_key=True),
    Column('nombre', String(50)),
    Column('descripcion', String(250)),
    Column('idproyecto', Integer, ForeignKey('proyecto.idproyecto')),
    Column('cant_comite', Integer)
)

association_table = Table('usuarioPorComite', metadata,
    Column('idusuario', Integer, ForeignKey('usuario')),
    Column('idcomite', Integer, ForeignKey('comite'))
)

mapper(Comite, comite, properties={
    'proyecto' : relationship(Proyecto, backref='comite'),
    'usuarios' : relationship(Usuario, secondary=association_table, backref='comites')
})